手写STM32 FOC记录 |
您所在的位置:网站首页 › pwm 互补 › 手写STM32 FOC记录 |
本文旨在详细记录学习FOC控制无刷电机的一些个人调试步骤以及心得体会。众所周知FOC是一个比较复杂的控制算法,要完全掌握它,个人认为最好的办法就是一步一步搭建适合自己的软硬件平台。本文硬件使用ST官方提供的NUCLEO-G431RB+ X-NUCLEO-IHM16M1,后续计划参考这套硬件平台制作自己的PCB。硬件有了,软件代码部分从新建工程开始,首先记录最基本的6路互补PWM的产生过程。 一、6路互补PWM的配置 1、时钟配置 使用外部24MHz晶振 时钟频率配置成最快的170MHz
我是用的是jlink的SW模式,配置调试方式为SW
接下来是最重要的TIM1高级定时器的配置,高级定时器功能很强大,配置相对复杂,且需要针对对应的硬件去做配置。高级定时器主要用于产生6路互补的PWM来驱动MOS管,加入死区防止电源导通,使用刹车引脚。高级定时器1通道1、2、3用于产生6路互补的PWM,通道4用于后续的 ADC 电流采样。引脚配置与PWM极性请根据自己的硬件合理配置
配置PWM频率 设置两个与PWM相关的宏定义,便于后续代码修改
配置刹车引脚极性,根据实际硬件配置 配置死区时间,根据所选MOS的规格来确定,本文配置的5,计算约290ns 互补PWM极性配置,根据硬件选择,若上PMOS,下NMOS,极性相反 ,如果是上下桥都是NMOS,则需要将极性配置相同,否则上下桥MOS直接连通,电流很大会比较危险。
最后配置一个LED引脚,用于指示代码运行状态。
最终配置完成之后得硬件引脚分配如下。 生成工程后,应首先对PWM模块进行测试,如果有示波器,先测PWM是否正常,死区时间是否正确。测试时,建议新建.c和.h的测试文件,将要测试的模块都在测试文件中实现,在主函数中调用需要测试的模块即可,这样可以避免后续频繁修改配置文件,导致代码丢失。
最终示波器测试,其中的一路互补PWM波形如下 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |